#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <tchar.h> 

int main(){
	float width,height;//浮点数：宽、高
	width = 600.0;//宽度
	height = 600.0;//高度
	initgraph(width,height);//创建窗口
	int score=0;

	float x,y,r;//浮点数：横、纵坐标，半径
	r = 13.0;//半径
	x = width/4.0;//横坐标
	y = height/2;//纵坐标
	
	fillcircle(x,y,r);//绘制小球

	settextstyle(40, 0, _T("宋体")); // 设置文字大小、字体
	TCHAR words1[]=_T("别碰白块和地板！");
	outtextxy(50,30,words1);//打印文字
	TCHAR words2[]=_T("按空格开始");
	outtextxy(50,80,words2);//打印文字
	_getch(); 



	float g,vx,vy;//浮点数：重力加速度、横向速度、纵向速度
	g = 0.65;//重力加速度
	vx = 0.0;//横向速度
	vy = 0.0;//纵向速度

	float left_x,left_y,right_x,right_y;//方块左上、右下xy坐标
	left_x = width;
	left_y = height - 160.0;
	right_x = width + 10.0;
	right_y = height;


	float rec_vx;//浮点数：方块速度
	vx = -5.0;//方块移动速度
	
	while(1)//空格检测、空格跳跃
		{
			if(kbhit())
			{
				char input;
				input = _getch();
				if(input == ' ')
					{
					vy = -15.0;
					}
			}
		

			vy += g;//小球纵向速度
			y += vy;//小球纵坐标

		
			left_x += vx;
			right_x += vx;

			if(right_x <= 0)
			{
				left_x = width;
				right_x = width + 10.0;
				left_y = rand()%int(height/4)+height/2;//随机高度
				vx=rand()/float(RAND_MAX)*4-8;//随机速度
				score+=1;
			}

		
		
			BeginBatchDraw();//开始批量绘图
		
			fillcircle(x,y,r);//绘制小球
			fillrectangle(left_x,left_y,right_x,right_y);//绘制下方块
			fillrectangle(left_x,0,right_x,left_y-130);//绘制上方块

			FlushBatchDraw();//
		
			Sleep(10);//暂停10ms
			cleardevice();//清屏

			if((x+r)>=left_x//下板块碰撞检测
				&&(x-r)<=right_x
				&&(y+r)>=left_y)
			{
				TCHAR words3[]=_T("拜托 你很逊诶");
				outtextxy(50,80,words3);//打印文字
				Sleep(50);
				score=0;
				system("pause");
			}
			if((x+r)>=left_x//上板块碰撞检测
				&&(x-r)<=right_x
				&&(y-r)<=(left_y-130))
			{
				Sleep(50);
				score=0;
				TCHAR words4[]=_T("拜托 你很逊诶");
				outtextxy(50,80,words4);//打印文字
				system("pause");
			}
			if((y+r)>=height)//触地反弹
			{
				vy=-0.7*vy;
				y=height-r;
				score=0;
			} 
			if((y-r)<=0)//触顶反弹
			{
				vy=-0.7*vy;
				y=r;
			}


			TCHAR s[20]; // 定义字符串数组
			_stprintf(s, _T("%d"),score); // 将score转换为字符串
			settextstyle(40, 0, _T("宋体")); // 设置文字大小、字体
			outtextxy(50, 30, s); // 输出得分文字

			EndBatchDraw();//结束批量绘图
	}
	return 0;
}